package me.zhengjie.webuser.util;
import net.coobird.thumbnailator.Thumbnails;

import java.io.*;
import static java.lang.System.in;

public class ImageCompressor {

    /**
     * 压缩并返回新的图片流，支持 JPEG、PNG、BMP 三种格式。
     *
     * @param inputStream 原始图片输入流
     * @param format      图片格式：jpeg, jpg, png, bmp
     * @param quality     压缩质量：0.0f（最差）～1.0f（最佳）
     * @return 压缩后的图片输入流
     */
    public static InputStream compressImage(InputStream inputStream, String format, float quality) throws IOException {
        // 自动将 BMP 映射为 PNG，以利压缩
        String fmt = "bmp".equalsIgnoreCase(format) ? "png" : format;
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        Thumbnails.of(in)
                .scale(1.0)               // 不缩放，仅压缩质量
                .outputFormat(fmt)        // 输出格式
                .outputQuality(quality)   // 压缩质量
                .toOutputStream(baos);
        return new ByteArrayInputStream(baos.toByteArray());
    }
}

